package com.coder.algorithm.offer_2;

/**
 * 第一个只出现一次的字符
 *
 * @author yuhushuan
 * @date 2020/6/28 14:15
 */
public class _50_1_FirstNotRepeatingChar {
    private static char getFirstNotRepeatingChar(String str) {
        if (str == null || str.length() == 0) {
            return '\0';
        }
        int[] counts = new int[256];
        for (int i = 0; i < str.length(); ++i) {
            char c = str.charAt(i);
            int count = counts[c];
            counts[c] = ++count;
        }
        for (int i = 0;i<str.length();++i){
            if (counts[str.charAt(i)] == 1){
                return str.charAt(i);
            }
        }
        return '\0';
    }

    public static void main(String[] args) {
        // 功能测试
        // 存在只出现一次的字符
        print("abaccdeff");
        print("aaccdeff");
        // 不存在
        print("abcdabcd");
        // 均只出现一次
        print("abcdefgh");

        // 特殊输入测试
        print(null);
    }

    private static void print(String str) {
        System.out.println("字符串：" + str);
        System.out.println("第一个只出现一次的字符为：" + getFirstNotRepeatingChar(str));
        System.out.println();
    }
}
